#include <stdio.h>

typedef struct {
    int operand1;
    int operand2;
    char inp_operator;

} operation;

void parse_user_input(int arg_index, operation * a, char *mainline_arg);

int string_to_int_conversion(char *string);

int main(int argc, char *argv[]) {

    int loop_index;
    operation calc;

    //Extract input digits and end-user's desired operation
    for (loop_index = 1; loop_index < argc; loop_index++) {
	//printf(" loop index is %d\n", loop_index);
	//printf("%s\n", argv[loop_index]);
	parse_user_input(loop_index, &calc, argv[loop_index]);
    }

    switch (calc.inp_operator) {
    case '+':
	printf("%d\n", (calc.operand1 + calc.operand2));
	break;
    case '-':
	printf("%d\n", (calc.operand1 - calc.operand2));
	break;
    case '*':
	printf("%d\n", (calc.operand1 * calc.operand2));
	break;
    case '/':
	printf("%d\n", (calc.operand1 / calc.operand2));
	break;
    default:
	printf("Invalid operands entered as %d, %d, %c, exiting without calculation", calc.operand1, calc.operand2, calc.inp_operator);
    }
    return 0;
}

//Logic for parsing user input storing basic arithmetic operands and operations
void parse_user_input(int arg_index, operation * a, char *mainline_arg) {

    if (arg_index == 1) {
	a->operand1 = string_to_int_conversion(mainline_arg);
	//printf("%d\n", a->operand1);
    }

    if (arg_index == 2) {

	a->inp_operator = mainline_arg[0];

    }
    if (arg_index == 3) {
	a->operand2 = string_to_int_conversion(mainline_arg);
	//printf("%d\n", a->operand2);
    }
}

//Logic for converting string to decimal if 
//each element entered between 0-9 
int string_to_int_conversion(char *string) {
    int converted_integer = 0;
    while ((*string != '\0') && (*string >= '0') && (*string <= '9')) {
	converted_integer = (converted_integer * 10) + (*string - '0');
	*string++;

    }

    return converted_integer;
}
